package org.batatasframework.chart.columns;

import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.batatasframework.chart.ChartCell;
import org.batatasframework.chart.data.ChartInitializer;

/**
 * 代表列表上的一列的定义
 * @author jackson
 *
 */
public interface ChartColumn {
	
	/** 计算，分配顺序。每次在执行结果处理的时候，都需要被执行，执行后会重新分配这个字段所在的位置，
	 * 生成图形的时候，是根据这些位置来取数据来生成对应的图形的 */
	ChartColumn initialize(ChartInitializer initializer);
	
	/** 这个列是否包括子列，如果有，则表示总的列数 */
	int size();

	/** 表示有几级的子列 */
	int rowspan();
	
	ChartCell newCell();
	
	void resolveHead(String[] heads, int deep);

	void resolveHead(XSSFRow[] heads, XSSFCellStyle style, int deep);

	/** 该值在一行中的位置 */
	int getOrdinal();
	
}
